技术文档丨控制参数的自动调整服务
控制参数自动调整服务利用机器学习方法自动优化Apollo控制模块中使用的PID、LQR、MPC、MRAC等控制器的控制参数,从而实现在离线模拟环境中控制器全自动调整,这会省去大量的手动测试和道路实验。它继承了多种Apollo在线服务工具,包括动态建模、仿真平台和控制配置文件。
ENJOY THE FOLLOWING
控制参数自动调整服务:
1)通过调用后端Apollo Simulation服务来迭代生成新的控制参数并评估生成的参数,在该服务中,使用预先训练的车辆动态模型来进行控制在环仿真;
2)通过后端控制配置文件服务评估仿真结果;
3)此外,还会对来自控制配置文件结果的数十个控制指标进行加权并合并为一个加权分数,并以此分数作为优化目标,自动调整服务会在有希望的区域中连续搜索得分更高的新控制参数,直到达到给定的步骤。
控制参数自动调整是在控制在环模仿真环境中执行的,因此要求用户提供自己的车辆动态模型(即动态建模服务的结果)进行仿真;否则,服务将使用基于MKZ车辆模型的默认车辆动态模型。因此,对于定制车辆上的控制参数培训服务,一些预先要求的步骤如下:
Apollo 6.0或更高版本。
根据Apollo Dreamland注册的云和仿真服务。
动态建模服务。
任务配置文件设置
任务提交
任务结果获取
注册请参考《百度云存储BOS注册及用户手册》(链接见文末)。
注意:该客户端必须使用登记的bucket,并确保Bucket Name、Backet Area和注册时是一样的。
请与业务部门联系开通云服务帐户,并提供在上一步提到的Bucket Name、Backet Area。
任务配置应以
“ XXX_tuner_params_config.pb.txt”的形式进行准备,并带有“协议缓冲区”文件,如下所示:
根据上面显示的协议缓冲区,配置文件的示例如下所示:
XXX_tuner_params_config.pb.txt中对该消息的详细说明如下:
信息 | 详细说明 | 笔记 |
git_info.repo | repo名称将在Apollo仿真平台中执行 | 必须遵循《定制的动态模型指南》(链接见文末),将用于仿真的动态模型放置在此github存储库中的设计路径中。 |
git_info.commit_id | 将在Apollo仿真平台中执行的提交的ID | 如果为空,默认情况下将使用最新的提交ID |
tuner_parameters.user_tuning_module | 设为CONTROL | 必须为CONTROL,否则无法通过任务完整性检查 |
tuner_parameters.user_conf_filename | git_info.repo中的控制配置文件将在Apollo仿真平台中执行 | 调整后的参数和标志必须包含在配置文件中 |
tuner_parameters.n_iter | 用于搜索优化控制参数的迭代步骤号。建议值:对于1-2个参数调整的n_iter = 200;对于3-4个参数调整的n_iter = 300;对于5到6个参数调整的n_iter =400;对于7-8个参数调整的n_iter = 500;对于9个或以上参数调整的n_iter = 600 | 迭代步骤越多,优化精度越高(但是训练过程越慢)。必须小于1000,否则无法通过任务完整性检查 |
tuner_parameters.opt_max | 设为True | 必须为True,否则无法搜索优化的控制参数 |
tuner_parameters.flag | (重复的消息)在用户的控制配置文件中设置用户所需数量的标志(布尔型参数)。您设置的标志值(True / False)将覆盖控制配置文件中的默认标志值 | 这些标志不计为调整参数 |
tuner_parameters.parameter | (重复的消息)在用户的控制配置文件中设置用户所需的参数。如果用户设置了参数的常量属性,则将这些参数视为常量参数,并且设置的常量值将覆盖控制配置文件中的默认值;如果用户设置了参数的min和max属性,则参数将被视为Tuned Parameter,并且自动调整服务将尝试在min和max限制的范围内搜索最佳参数值 | 调整的参数越多,优化迭代步数就越需要(并且自动调整过程越长越慢) |
scenarios.id | (重复的消息)在参数自动调整中设置用户评估控制性能所需的场景编号。建议的ID:11014、11015、11016、11017、11018、11019、11020 | 用户还可以从Apollo模拟平台的公共方案中选择任何可用的方案ID。方案ID越多,自动调整过程可能越慢 |
dynamic_model | 设置为ECHO_LINCOLN,仅当git_info.repo设置为官方Apollo存储库时 | 忽略是否在 git_info.repo |
如果用户打算在仿真中使用他们自己的动态模型,那么请在github上的 apollo / modules / control / conf / dynamic_model_forward.bin提供前驱模型;在github apollo / modules / control / conf / dynamic_model_backward.bin上提供后驱模型。请参考《动态模型》(链接见文末)以获取有关如何生成定制动态模型的指南。
在使用自动调整服务之前,请先按照[百度云存储BOS注册](#百度云存储BOS注册)中的说明,按照《百度云存储BOS注册和用户手册》(链接见文末)设置输入文件存储。然后,将设计的XXX_tuner_params_config.pb.txt文件放入用户的BOS文件夹下的任何位置。
登录Apollo网页,然后在功能菜单中选择Apollo Fuel-> New Job。在“新建作业”菜单中选择“控制自动调整”选项,然后用从用户BOS文件夹下的根目录开始的任务配置文件路径填充输入数据路径(注意:输入数据路径必须包含完整的配置文件名),例如:
('input / XXX_tuner_params_config.pb.txt')。最后,单击“提交作业”按钮提交作业。
成功启动控制参数自动调整作业后,将通过完整性检查过程来测试用户的任务配置文件。如果无法通过完整性检查,则用户将在您注册的电子邮件地址上收到失败通知电子邮件,其中包含详细的失败原因。
如果控制参数自动调整作业成功通过了完整性检查程序,则在该作业完全完成后,用户将收到结果报告电子邮件,其中参数自动调整结果和链接的配置文件将作为附件提供。
结果电子邮件。
可以通过访问电子邮件中或随附的tuner_results.txt文件中的报告表来获得控件的自动调整结果,详细说明如下:
信息 | 详细说明 | 笔记 |
Tuner_Config | 任务配置文件的来源 | |
Base_Target | 最佳控制参数的加权分数 | |
Base_Params | 最佳控制参数 | |
Optimization_Time | 整个自动调整优化过程的总体时间消耗 | 单位:秒 |
Time_Efficiency | 单个优化迭代步骤的平均时间消耗 | 单位:秒/迭代 |
*《百度云存储BOS注册及用户手册》
https://github.com/ApolloAuto/apollo/blob/master/docs/Apollo_Fuel/apply_bos_account_cn.md
*《定制的动态模型指南》
https://github.com/ApolloAuto/apollo/tree/master/docs/Apollo_Fuel/Control_Auto_Tuning#CustomizedDynamicModelsGuidance
*《动态模型》
https://github.com/ApolloAuto/apollo/blob/master/docs/Apollo_Fuel/Dynamic_Model/README.md
以上是"控制参数的自动调整服务"的全部内容,更多话题讨论、技术交流可以扫描下方二维码添加『Apollo小哥哥』为好友,进开发者交流群。